#  boss直聘python岗位爬取
# 读取c:\Users\dell\Documents\「全国招聘」-2025年全国人才招聘信息 - BOSS直聘.xlsx文件
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

# 读取数据
df = pd.read_excel('c:\\Users\\dell\\Documents\\「全国招聘」-2025年全国人才招聘信息 - BOSS直聘.xlsx')

# 数据清洗
# 去掉薪水为空的数据，
df = df.dropna(subset=['薪水'])
print(df)
# 去掉薪水字段 中文字包含'天'结尾的数据
df = df[df['薪水'].str.contains('天') == False]
# 去掉薪水字段 中文字包含'面议'结尾的数据
df = df[df['薪水'].str.contains('面议') == False]

print(df)

# 薪水字段中，如果文字包含'k'结尾，那么把keyword替换为'k'，
df['薪水'] = df['薪水'].apply(lambda x: x.replace('k', ''))
print(df)

# 上面代码不用lambda如何写，用函数的形式
def get_salary(x):
    if 'K' in x:
        x = x.replace('K', '')
    
    if '·' in x:
        # 把'.'和后面的'薪'字符去掉，留下的部分作为月份数
        print(x.split('·'))
        r = x.split('·')[1].replace('薪', '')
        n = x.split('·')[0]
        x = float(n.split('-')[0] + n.split('-')[1]) / 2 * int(r)
    else:
        x = float(x.split('-')[0] + x.split('-')[1]) / 2 * 13
    return float(x)
df['薪水'] = df['薪水'].apply(get_salary).astype(float)

# # 薪水字段形式如：'n-m'，其中的n和m是数字，获取n和m的平均值作为月薪，
# df['薪水'] = df['薪水'].apply(lambda x: (x.split('-')[0] + x.split('-')[1]) / 2).astype(float)
print(df)

